package com.moli.iov.gateway.server.handle;

import com.moli.iov.gateway.server.handle.impl.LoginCommand;
import com.moli.iov.gateway.server.model.UpStreamData;
import com.moli.iov.protocol.enums.CommandTag;
import java.util.HashMap;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * <p>
 * 上行命令 执行器
 * </p>
 *
 * @author zql
 * @since 2020/2/21 10:25
 */
public class CommandInvoker {

  private static  final Logger logger = LoggerFactory.getLogger(CommandInvoker.class);

  private static final Map<CommandTag, Command> COMMAND_MAP = new HashMap<>();

  static{
    COMMAND_MAP.put(CommandTag.VEHICLE_LOGIN, new LoginCommand());
  }

  /**
   * 根据命令执行
   * @param commandTag
   * @param usd
   */
  public static void invoke(CommandTag commandTag, UpStreamData usd){
    Command command = COMMAND_MAP.get(commandTag);
    if(command == null){
      logger.error("执行上行命令业务失败，没当前命令 实现 command:{}", commandTag);
      return;
    }
    command.execute(usd);
  }
}
